package produto;
// Generated 06/07/2011 20:29:01 by Hibernate Tools 3.2.1.GA

import descricaoProduto.DescricaoProduto;
import detalhamentoEntrada.DetalhamentoEntrada;
import fornecedor.Fornecedor;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.GenerationTime;
import statusProduto.StatusProduto;

/**
 * Produto generated by hbm2java
 */
@Entity
@Table(name = "produto", schema = "public")
@NamedQuery(name = "produto.listar", query = "from Produto")
public class Produto implements java.io.Serializable {

    private int idProduto;
    private Fornecedor fornecedor;
    private DescricaoProduto descricaoProduto;
    private DetalhamentoEntrada detalhamentoEntrada;
    private Date dataEntrada;
    private Date dataValidade;
    private Double valorUnitario;
    private Double precoCusto;
    private Double precoRevenda;
    private String notaProduto;
    private String numeroSerie;
    private String narrativaProduto;
    private StatusProduto statusProduto;
    

    public Produto() {
    }

    public Produto(int idProduto) {
        this.idProduto = idProduto;
    }

    /**
     * 
     * @param idProduto
     * @param fornecedor
     * @param descricaoProduto
     * @param dataEntrada
     * @param dataValidade
     * @param valorUnitario
     * @param notaProduto
     * @param numeroSerie
     * @param precoCusto
     * @param precoRevenda
     * @param narrativaProduto
     * @param statusProduto 
     */
    public Produto(int idProduto, Fornecedor fornecedor, DescricaoProduto descricaoProduto, Date dataEntrada, Date dataValidade, Double valorUnitario, String notaProduto, String numeroSerie, Double precoCusto, Double precoRevenda, String narrativaProduto, StatusProduto statusProduto) {
        this.idProduto = idProduto;
        this.fornecedor = fornecedor;
        this.descricaoProduto = descricaoProduto;
        this.dataEntrada = dataEntrada;
        this.dataValidade = dataValidade;
        this.valorUnitario = valorUnitario;
        this.notaProduto = notaProduto;
        this.numeroSerie = numeroSerie;
        this.statusProduto = statusProduto;
        this.precoCusto = precoCusto;
        this.narrativaProduto = narrativaProduto;
        this.precoRevenda = precoRevenda;
    }

    @Id
    @Column(name = "id_produto", unique = true, nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int getIdProduto() {
        return this.idProduto;
    }

    public void setIdProduto(int idProduto) {
        this.idProduto = idProduto;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_fornecedor")
    public Fornecedor getFornecedor() {
        return this.fornecedor;
    }

    public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_descricao_produto")
    public DescricaoProduto getDescricaoProduto() {
        return this.descricaoProduto;
    }

    public void setDescricaoProduto(DescricaoProduto descricaoProduto) {
        this.descricaoProduto = descricaoProduto;
    }
    
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_detalhamento_entrada")
    public DetalhamentoEntrada getDetalhamentoEntrada() {
        return this.detalhamentoEntrada;
    }

    public void setDetalhamentoEntrada(DetalhamentoEntrada detalhamentoEntrada) {
        this.detalhamentoEntrada = detalhamentoEntrada;
    }
    

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_status_produto")
    public StatusProduto getStatusProduto() {
        return this.statusProduto;
    }

    public void setStatusProduto(StatusProduto statusProduto) {
        this.statusProduto = statusProduto;
    }

    @Column(name = "valor_unitario", precision = 17, scale = 17)
    public Double getValorUnitario() {
        return this.valorUnitario;
    }

    public void setValorUnitario(Double valorUnitario) {
        this.valorUnitario = valorUnitario;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "data_entrada", length = 13)
    public Date getDataEntrada() {
        return this.dataEntrada;
    }

    public void setDataEntrada(Date dataEntrada) {
        this.dataEntrada = dataEntrada;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "data_validade", length = 13)
    public Date getDataValidade() {
        return this.dataValidade;
    }

    public void setDataValidade(Date dataValidade) {
        this.dataValidade = dataValidade;
    }

    @Column(name = "nota_produto")
    public String getNotaProduto() {
        return this.notaProduto;
    }

    public void setNotaProduto(String notaProduto) {
        this.notaProduto = notaProduto;
    }

    @Column(name = "numero_serie")
    public String getNumeroSerie() {
        return this.numeroSerie;
    }

    public void setNumeroSerie(String numeroSerie) {
        this.numeroSerie = numeroSerie;
    }

    @Column(name = "preco_custo")
    public Double getPrecoCusto() {
        return precoCusto;
    }

    public void setPrecoCusto(Double precoCusto) {
        this.precoCusto = precoCusto;
    }

    @Column(name = "preco_revenda")
    public Double getPrecoRevenda() {
        return precoRevenda;
    }

    public void setPrecoRevenda(Double precoRevenda) {
        this.precoRevenda = precoRevenda;
    }

    @Column(name = "narrativa_produto")
    public String getNarrativaProduto() {
        return narrativaProduto;
    }

    public void setNarrativaProduto(String narrativaProduto) {
        this.narrativaProduto = narrativaProduto;
    }
    
}